// Copyright 2018 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the “License”);
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// <https://apache.org/licenses/LICENSE-2.0>.
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an “AS IS” BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// This file was generated by scripts/generate-benchmark.py, do not modify!

const dataBig = [{
  a: '-0x9716DA6217B37456EEDEA9639A35EF0F50310E934',
  b: '0x41FD895BEAB855F38432CC3B388D32EF9C78A',
  r: '-0x97171C5FA10F5F0F44D22D966671279C8320AB0BE',
}, {
  a: '-0xB92025C09C9F1DA71AE7250416A3EEC0F65E2CA0190163999AC9CF4',
  b: '0xEAFBD0B9763477B1A0C99B03D386352CD31DD63FC',
  r: '-0xB92025C09C9F1E9216B7DE7A4B1BA061BFF930739F36906CB8A00F0',
}, {
  a: '-0x5C18679B7DA79BEEA32131BAE242A1F446FF3829AD969F1A8A0030DE8EFEDC',
  b: '-0xF796C7837E86F5BD1E7952E4D5D05577637F645D81DDE',
  r: '-0x5C18679B7DA79BEE93A7C542AA5A32987517A2FB603999C313C83A98B6E0FE',
}, {
  a: '0x41E7E27F36F783047D39621AF4B3DEBB658DB90D19340AD2397942',
  b: '0x5E090CE81C4D3E963110EEBDED779D944246F0E1D112715FE0FFC38846',
  r: '-0x5E08CB0039CE079EAE0C71848B5CA8E0638B8B541805582BD62D8A0F04',
}, {
  a: '0xB48303CF3E36682D6CCA5AF4E9C088E3FE6',
  b: '-0x2F4F707E5C859409D7BFE9B06E7D1CBB69BD484BCD7999023C2B35D0CD9',
  r: '0x2F4F707E5C859409D7BFE9B12300208AA7F3B0793A43F3F725EBBEB4CBF',
}, {
  a: '-0x8B42B8EDE292FB1CB7D194EC18B05ECAF3D4447268B85B',
  b: '0x28358EEB57C699DE79DF75733AC87ED000404CC235E32',
  r: '-0x8DC611DC980F64BA9F6F8C434C5CE6B7F3D8493E8C168D',
}, {
  a: '0xF5D73130C2370D3DB746526B1716C42D0A89894E79C',
  b: '-0x756B94AA455F2DF9AD3E4EF5231318C8200A353AC8EB40F4CE769DA57AC62',
  r: '0x756B94AA455F2DF9AE34262653D54FD55DC17B8D340257B8FB81272EC93FE',
}, {
  a: '0x8B7672AE45EC4B973282BA31D8F87C022714AA1CF2C91B30F003EAF9ADB94CA2E',
  b: '-0x7B9AF9C3E6976BE32B02A1A48D27AD3E6EC8D7551C81DC3F5D0021236D',
  r: '0x8B7672B5FF9BE7D59BF978648922964AF98F7E03DF569082B821AEEF7DBB5ED9B',
}, {
  a: '0xBFF963B5EF5A3C80D320B7E0106E546FCED',
  b: '-0x78E7E11C61761CD3A9B2B0CACC9C378105EDDEBC4',
  r: '0x78E7E1DC5AD9D2C303EF319DED54179174424E8B1',
}, {
  a: '0x45F54AAE61AB7133291B46C321C09154FAEE0D4853A85019',
  b: '0x5EDFD5494D3BF7931C6243BAC3E29399889BDCC5413FED17517A038C',
  r: '-0x5EDFD5490746ACE4BAB6D2879AC74CD666DB4B704651DFCEFDD1B373',
}, {
  a: '-0x8E7BE765377E7BDC3557EC1581BAC0E1DFECA59C96E34DB0F8E28EB52B22E6',
  b: '-0xCA856B59F8F259E4FD647E779DF4AB9CBDE755A951F9DE',
  r: '-0x8E7BE765377E7BDB6AD280BB88C866FCE2882724F8EEA2143AFB390BD92908',
}, {
  a: '-0xDA9525A57286EB9067D733CC2101554F416FCDF5FE64A8D50DB',
  b: '0x5566D157F25AEA01D7019DA6ECCB7C2E35751D03B201A9C0CEC8A',
  r: '-0x5641667D97CD70ED676974DAB8EC7D8384B68CD1A8000E69A3D65',
}, {
  a: '0x873E0F6466F6E91AEFB71835EF0481B82DFF22581E679FD8A954E5D9830B5F9F',
  b: '-0xF977D15C2CD0E2FD4C5A17405543B1998263878',
  r: '0x873E0F6466F6E91AEFB71835FE9BFECDF0CC3087F32D414CAEA920F31B319817',
}, {
  a: '0x9E3F4BBA1EAD536593AAD85C9C84A9949A6D',
  b: '0x39D99D364CE45D248DDCB83DD08F580DCB9E5DB293705254271E177F7',
  r: '-0x39D99D364CE45D248DDCAE59DBD3B622F6680477E5EA888BDC84CDD8A',
}, {
  a: '0x844C3E126A2BD6321826DB6FF24868C92EF027D9',
  b: '-0x35DBCF6AC135B11033FD99EA566B61D5504',
  r: '0x844C4170272282457337DEAFCBE70E2FE50D7CDD',
}, {
  a: '-0x3C08A74895050FC5B48AF2D96C6F5E622F8E641035AAB5C9C58D07B7F356016D2B08A',
  b: '-0x21F6869F615BC99A6B653310EDCA1B957586FB0B96AE264D4E57F52992E0DCE018FEF9',
  r: '0x1E35FC2AD80B789E101C83E3570325AF528E14CA93537AF0B1FF24AE13AB7CC9464E6F',
}, {
  a: '-0xC081EAB0529B7658C06A4F3CBEFE9D73325B8',
  b: '0x705B8C8B1A1F3B039707DAD41C85F30AA1F72E673CE',
  r: '-0x705B8D4B9C09EB56327E339486D52FC9A094A199986',
}, {
  a: '0xC809F1B5AB57C2C92385226CA77A7E3489A4280CD',
  b: '0x942D06EFA44B0FB5B825FFBB57A5E4F8B236FB97C3A9486BAE7DAC',
  r: '-0x942D06EFA44B0335190AA505DB7952C0601031201BC5FFD16BFCDF',
}, {
  a: '0xF8E66A9E1A673A270723BB024267BADEBDA2FBC40D98C57741',
  b: '-0xC4AA59E5ED068BC9895D44AB4BD3A7C1487D2723B4B64DAC4225074937B14561AC5A',
  r: '0xC4AA59E5ED068BC98A562B15E9EE0EFB6F844ADEB6F8B56720E2AA44FBBEDE27239B',
}, {
  a: '-0x502E73CE168D4F9ED84574AF2D0F6049679A9A34F148C500D41DAB8444290DB98',
  b: '-0x9053F7AD88E83AF0619256EC73EA2C5D8898A9AF8BEF8D469B70',
  r: '-0x502E73CE168D469998CA9C20A9605A30422BD2F64E82EC774982B2C54B54A4028',
}, {
  a: '0x4606519A81E89AB7F4869E50E924B67DB8E890F04954FFAB77141B0A05A2BC82C',
  b: '0xDF48CCA9065FDF1AFD0777E2AE40C8E50509F93E1BA85EBB545785E24',
  r: '0x46065199A29FCE0EEE26BF35EC1D3E9B0AA7C80B444B066D5B6BBC4EB14B36A08',
}, {
  a: '-0xD079E7E610C7A0ED59A97887F1C8E7ED41D907605D531EFD511402E000',
  b: '0x5BBE67C68B1606C646E1C3B943CD0D94783AA5F8EF',
  r: '-0xD079E7E610C7A0EDB567E04E7CDEEEB388BACB19A1202C91C94EA8D8EF',
}, {
  a: '0xC2E93936CC693440478125CA0879F826988E7840',
  b: '-0x9724F3F0A06CABB55113BB629994DC369C5A6DE4BE94ED9F1598ED3FE0CE7C6B487',
  r: '0x9724F3F0A06CABB55113BB6299A10ACA2FC73478029965B1723974DF63380552CC7',
}, {
  a: '0x9F8AEDB1AC593725E309D9AF9C15D23344ADB',
  b: '-0xC7CC0AF7F0C1B81942C70C5AEDFD3A1770320329868282F79B870',
  r: '0xC7CC0AF7F0C1B819E251FA0C9A56713D533BDCD92298552AE034B',
}, {
  a: '0x15F10946B9085198366B442FACC79F665FE92A2486F3EFE2',
  b: '-0xFD283B274E7B969837C6669B382B5E62C7EBFD9DD08D6101C8B788E4',
  r: '0xFD283B27646C9FDEF0CEB8336E96A29274B39D0430768B264FAB78C6',
}, {
  a: '0x5126BA0C36E6E3D1A480D0AE7F4045F825A5D6D6A26FBFD045DE983CB81CFB8FA86B',
  b: '-0xA4FD99597EB2E7E3B3BB1BCD4AF432DA807EE6B2FF29E3',
  r: '0x5126BA0C36E6E3D1A480D1537CD99F76D88DBA8A5D8B8D1B3A1172BD3703AE8ED24E',
}, {
  a: '0xD0E3FC4ACBE9CB8692FAA83DF546E85DF6BB3965A',
  b: '0xC6709A47775CD04B3BD414E75BCAF9425F37969F063BDB8A5F2F58D4BC5A989',
  r: '-0xC6709A47775CD04B3BD4141677CEAE76756C100C0B939D951846FADE012132F',
}, {
  a: '-0x95F53DA516159FC44E722FE9571E6678459453A81E20F2D4D766C3DB57',
  b: '-0xC4DB6DE0527C9C42C5F32A7361550EB9A0356C5B880AA289157BD9',
  r: '-0x95F478C9A8354D47B22F69F62CAB052336DAB372B1C56ACA34DDAE5F7E',
}, {
  a: '-0x47DF9C730D05096DCA5B121A0C301A9D424AE5DD9D3BE7E19964633F25EBC73F0F',
  b: '-0xBB0F0D625035036A6A9DF0329C653D8347890764',
  r: '-0x47DF9C730D05096DCA5B121A0B750B8FDFFAB0DA32D149F166C7FE01A2A43E37AB',
}, {
  a: '0xEC67FCA759157C3A66E873A79C19EC6D144622490BF6E092',
  b: '-0x10E13ED44B2E23F321139962CC1AF73A4758709A24A953ED01',
  r: '0x11CDA6D0F287396F5B7A81D673B71126B46CB6BC6DB54ACD93',
}, {
  a: '-0x250CE127163C12B8B24625D685834CEA485923B9D29FD15AB30DFE9022',
  b: '0xF606E70A31A8666F3B707299D7C6CB7E8ADB99B1179F6090818AFFD4DBDF',
  r: '-0xF62BF3EB58BEA281F422B8BFAE4C4ECB7523F2D4D1720061DC3E0DD36C01',
}, {
  a: '0x8C7EA1E3C62AF630346ED90359D9F617CD38AF016AF',
  b: '0xE90B6962C1D2731DAFE8816B9101FDAA355AADBCEECE36B4C5CDCCB301EFE04853F1',
  r: '-0xE90B6962C1D2731DAFE8816B883A138BF8F7FE59EB87492490302D51851C55583D42',
}, {
  a: '0xF0305081BE6E46F4A3460EB6951DB033133755',
  b: '0x4FC7BC50446DF3CF2F55C90473B4904FE35D21C766BA3',
  r: '-0x4FC7BC414168EBB3487159BA3F53A4E691821E963344E',
}, {
  a: '-0x5355C30F207C813069B838ED2B07C32F37E12837A1E08AF0CB2A7C573590480D703',
  b: '0xCD40A562D74BF5673BC5852099A93F3CCCF',
  r: '-0x5355C30F207C813069B838ED2B07C3300521CD9A792C805806F00177CF39874A3D2',
}, {
  a: '0x6D6273CB21E3DBA1B6D2429BF848BB22B414033E3750C6DB633B062',
  b: '0xFC373F76D24F6F1897023332F35C8387F32D01',
  r: '0x6D6273CB21E3DBA1A70ECEA48B23C4312AA3E00B081AFEA2E408361',
}, {
  a: '-0x5465B25D0B7C8CC690B1D35E8580D6E25309B5',
  b: '0x1A6FED0F1C32712A39CC4BD85D78AEFDFA1A3D7651F3377F2A6C6F9DEB2896CB',
  r: '-0x1A6FED0F1C32712A39CC4BD85DCD14B05725BA031883E95288F1F074CD7BA080',
}, {
  a: '0x54F6670125A41CF76BA4241BD4C15CEE0705FA976ADDFAA92817C526D382348BB',
  b: '0x9E04561E533131DA3D0372DC68515333F2B70563B91ED223AA37A5F851E',
  r: '0x54F66663214DFEA43A7249DED14E8085B5B2C6A4B3D896F00945A17C9BDC3C39D',
}, {
  a: '-0xE0C2A9475D801A62F0277932C29EE84E4BA8AB232AABDA106C2',
  b: '0x754D37900B0A4FF900F73D04E5EC48E4FA12F8E8D4039C744C',
  r: '-0xE8177CC05E30BF628036ED0310FDACDC9B49DAB1B7EC13D7B0E',
}, {
  a: '-0x5E1FF60567DC6BAF5E252AF5EF40FEAFD906D556CA05C23A813584F0610529B',
  b: '0xE615408EAAF6A6C95DC0A86BF007C6A6EEFF583E3E65',
  r: '-0x5E1FF60567DC6BAF5E338C49F82BAE1A459CB16150C4C2B6EBA474E5E4E9100',
}, {
  a: '0x1CAEECED30ED85AF92DE89002359B7FE14655318E23323D9E34FEB64C396DAB2DFDD9',
  b: '0xE3A6B5CF908BBBAF12BA318ADD24B80DD433E2AD69167A9267D9EEBB47EA5',
  r: '0x1CAEECEC4D46CFE00252CD51109F867337409B0B0DFF412C7A3970D25BBCEBF797F34',
}, {
  a: '0xE7A82982B1981E6F97DD5F5A13E41AA7ED763A7456DAD',
  b: '0x78B3FDF7E273708E0DCE3311775465F1B29E1F89B89EDABB92A2D7D02C0DA4B2B97',
  r: '-0x78B3FDF7E273708E0DCE3229CF2AE3401A7FAFF1DB3F80A7AE882FE2B5D3305BDEA',
}, {
  a: '-0x4F69A99D13ACF0199F78D6BDCD1F089A77E3DBFC',
  b: '0x3EFE6289662127EDEB1CA2B666B9D340FE3413B7B68E0EFECA27ECF9143E30',
  r: '-0x3EFE6289662127EDEB1CA305D0637054AB242D572F64CCCBE9308770F81A2C',
}, {
  a: '0xC5EB82B96AA6DC65BFF6E1924175B76E3CC',
  b: '0x63123AD13AE2425E775CCF56A829C316B20BDE95994DE39F7451F69',
  r: '-0x63123AD13AE2425E775C096B2570586FD5A61E9EB7BBA229BCE3B9D',
}, {
  a: '-0x92D944C8F0F0ABEC09F8983B8D3A094842862',
  b: '0x9809C43E61877A18E8790157DA6C0EA12061229EFDF6C8BEE010021B',
  r: '-0x9809C43E61877A18E8822EEC26FB1DABDF21C22881AF9C5F74942A7D',
}, {
  a: '-0x5ED1194AE30B360028F5AD66A70051282D6198938E58D544663EB0B4',
  b: '-0x300B754C287ED4D11CB201746A432AAFCA9BC4917BCD35B8848',
  r: '-0x5ED1164A2BB673783BA89B9B86E90A83FAB69BE9D20FBD8792E3286C',
}, {
  a: '0x290E14D5B7AFC46ADC2680E7084AF8CC006D4C6D1DB6093D',
  b: '0x1ACD299BB2C2FB03EAFC29935FE409D70E8BC1A',
  r: '0x290E14D5B602F1D120FA5136C99B3632CA6F0BCFACCD4D23',
}, {
  a: '-0x6D1F313F93BC01E354B7E7F5B529154A253D7D8F6EFF90BBF8842540FFD4ACA515A',
  b: '-0x33B547532710975EB220B885D7189C976A38ADF8C31D01DD14565C',
  r: '-0x6D1F313F93BBFEA80042B584ABB32A2819B5201DE5361A186DA4990F2FB6DB5FAFE',
}, {
  a: '0x327119CD44E7684247D08CC555D3CA6069AE648BD92C985E7B2435ED69C264873',
  b: '0xD0ECD23BAD752F87BE2F0953852B1707715C76D69243916861C0AA25AE31',
  r: '0x32710CBE77C3AD6AF4D810E2653E920DB83DED7611BF2F3A420DAFD15F2009A42',
}, {
  a: '-0xD1C0229EA03ED2D5117B19C53351FD1809562B4534A208E20858',
  b: '0x1C62BE08F75335AC6DF12DF1CCF8E0C8E69BBA7BAA25CBDCCE03CC5641009A41C2E7',
  r: '-0x1C62BE08F75335AD3FB150906D37B39DF816D440DD77C8F4D759F79B75A2A323CB3F',
}, {
  a: '0xDDB54E3A921171F996B9487E0A4A5D666BD5A553A161F8596AF35FF81E94',
  b: '-0x69B024F1280CB0E6C54214DFEC0C95817B12',
  r: '0xDDB54E3A921171F996B9487E73FA825793E2563A66A40D3956FFF57999A6',
}, {
  a: '-0x11BCF38A45BD359C45ECBFC8BA422EEDE8302BCEA48E70E31A313',
  b: '-0x64FE07AA39E9F46B795C105BF102724FAB00C618891D99558424D6C',
  r: '0x64EC4AB6AFA43735DD16239C28483020BD1895ECBA790AE4A10AA59',
}, {
  a: '0xE8C5C6B8E1167F9D0B10057DF8370777575523442524102392',
  b: '-0x550F8A38C26A2C84422B2DF45B3DABDA795CE8A3B8F4EE4AABF247196453EACA1CF',
  r: '0x550F8A38C26A2C8450B78A5FE94F13D44A0DE8FB98785EC22167994DA6A62BCC561',
}, {
  a: '-0xAFDDDFE4ABB56225FDBA0E08385F4925E5E4DB878776D0074A79D',
  b: '-0x3FFF4F19E9C2521A59FF5A7BF2A202D9C9A343AA7CC0C1',
  r: '-0xAFDDDFE0ABC070876194EC629869A166BBC4ADEAED42955F7E6DC',
}, {
  a: '0xD61CC421ECF313357FDCC19BEC840BCC2EE',
  b: '0x50B7FB3739AD2409BB1D7F9B14CC4B4E7C38F6',
  r: '-0x50AA996AF78E54D887C581CEFB0D830DBF7608',
}, {
  a: '-0xE135B557335C912D4B1C43AC52C78B7E77A671B043FED065D3A3829BBD58F5D1C',
  b: '-0x77727B168D00ACE69AE81B3510F23CED6B83F171CC425DCB277FF464F87',
  r: '-0xE135B4DFC0E17AA04A6F5D116AAC566D85698444C00D5E999145B7743D6490D95',
}, {
  a: '0x4CFD8D74928A7F3EC231B66A4DA85F0078944C45EE7B4A3',
  b: '0xB57680AAA1C676001B980CEDF69988A901E624C141980A5',
  r: '-0x6878F3360F3BF6C159665683A8F129A88951D87B531CC02',
}, {
  a: '0x2A33D76143EB29BEB9CFD17DDB611BF3197F',
  b: '0x6FB2F3EA062CB236973597565C576C2ABAADFE1',
  r: '-0x6FB050AC90187383FB49FA594479B618FB7C662',
}, {
  a: '-0x6245FA2927B6AE7733CC9FE6C167FFF5127241EB9',
  b: '0x597B652DEECA17A8DCCDBFC93FD94EC9E7F2C6869648C62D363D1FBB33F9365545E99',
  r: '-0x597B652DEECA17A8DCCDBFC93FD9B10FE21BEE3D44BFF9F9D623E12333EE48C787D52',
}, {
  a: '-0x79E11F3D9A3600511513D47271D5602AF7D70976B615F77B80F2C18DF804ACE2E0D3',
  b: '0x1CA125CAAD4B58538954954E5E7569816AC226374401F',
  r: '-0x79E11F3D9A3600511513D4743BE7BCD5CC8C8EAF4B5F4C61684959A4A427105720F2',
}, {
  a: '-0xC735FDEF78E03C15EA0549DAF8A02AC08F84BD5C2CC388E1DF7C7873B907D3C9DD6DA',
  b: '0x71EBD92BA9785DB6DA3D3D64739BEB1647DF588CA',
  r: '-0xC735FDEF78E03C15EA0549DAF8A09CAC68B066D48A7A631F1CE0EC0FA41E1BA935FA4',
}, {
  a: '-0xAC708083B4A8814EDDF69AD2C14AEB9A7BF42481F19FA1B65ACF7232',
  b: '0xE4759D8D70C152A5D029DE44BF01166E2CDE043A6153144F32531BC52A',
  r: '-0xE5220E0DF475FB271F07D4DF91C26159C759F85EE344B3F0E8ADEB375C',
}, {
  a: '-0x7B44C1DFCD1198853B7A2A5DC11D485B55E7A0FEA106FE8264D',
  b: '-0x665BC15D3F0C3365D4C9F9E3FBDD4CECE0A1ACDEC9EA',
  r: '-0x7B44C1D9675582B14AB6F400747DAA1B9812D23096EC3095C63',
}, {
  a: '0x26AE3924F8DD553BEB19D4654CCD5C7D6F7A9504',
  b: '0xC3BD12D366285E51DEAC2F3E4EC1CA22C03295DFBB60B528E67EF346C2DA065E73D',
  r: '-0xC3BD12D366285E51DEAC2F3E4EBF5F3F2DE3080A67A2038BA02A2670FB030EB5239',
}, {
  a: '0x352FBAEAC395F20301B86D55F6358755B4393E508204488',
  b: '0x2733527462037B6D7E50DFB3EE1DE4177709BCA72240FA063',
  r: '-0x26FE22B9773FE57B7B4F27469827AE9021558368D1BEF5BDB',
}, {
  a: '-0x5ADD7375E77E5378E6C418F8136C9F62839049DEDCA908554570D1B49D03C97',
  b: '0x56E741126E4D5169FB1D4BF9A9EAA14357490D082D26DE6D',
  r: '-0x5ADD7375E77E537E55382A1EF841B602356509797B531C8ABA01A2376F71B04',
}, {
  a: '-0xDDCAA6364B4B726AFEE09BB9678D84CA7C0F358A2B4415F2F9D7DBF81A8EE8',
  b: '0xCB41D37D6C92B11C74C373439106593A3A0',
  r: '-0xDDCAA6364B4B726AFEE09BB9679A38E7B3E5FEB53D0B622A2E10EC5DAE3288',
}, {
  a: '0xE310E7FA84E356C8EB74177556B26B6C6D86DE4F2EFEA40FEF0BEFE6DEC5A2759FCD8',
  b: '0xCE6641AC8BDF9A8A8E4AD690F87C3165F660FD89F08673902969A71',
  r: '0xE310E7FA84E355FA85326AE97717E0DE22B04D56B2CD3E198E0E65F65852124C36267',
}, {
  a: '0xA4378EAEEA1A41099446D81CF75FEF5CC1AE2AEA082FD422E8DF560A5DC825EEF587B',
  b: '-0xA5787075069525EB92102EEAC94724330AEA6C5',
  r: '0xA4378EAEEA1A41099446D81CF75FF0023A1E9FF09D55BFB4F90E40D3A4EC58F9DFF40',
}, {
  a: '0x9ED783592B06701D7C2AF71276569C8E36AD1091AE0BB82D5056C',
  b: '0xCE541C4D28F9B6A3482E2FC17535E955BAA8DB6',
  r: '0x9ED783592B066F4F280EA9E97C9FF946087D4F1C78226272A77B6',
}, {
  a: '0x69603E56A5A7E7E831A2821F8BA4A27AF9AFDDE1F63F',
  b: '-0x94CA40F44B9045F2704F1D451FD7EEF904E16EA76678A661C1A2B7C31A',
  r: '0x94CA40F44B90465BD08D73EAC7BFD72AA7638E330B1B215B718099B959',
}, {
  a: '0xAE0234C3BA4895E1268AFAF082A45FD2D4029AEE0C46C05B14B495D',
  b: '-0x3A2F26F2482AA38B3A3932ABF891DDC916FA58B9',
  r: '0xAE0234C3BA4895E4C97D6A15054E98867795C5AD95649CEC845A216',
}, {
  a: '-0x4AA30B6EE00BD57418AA182475CE7AD7F0AACCBEB',
  b: '-0x834D5E568494354A4D39FB83DDE4DA0B698B8E88EDCB805473170D1619C988F',
  r: '0x834D5E568494354A4D39FB393AD96B2B5DB61A7043B35BDEA49C35256EFCCA4',
}, {
  a: '-0x3CB15CF4042623AF5295C2F68773B4049B143F339C4357F5A8A8485199A20D2C3',
  b: '-0x515ADF063C5E0C36D99E5AAE771CD8032C7CE947DB07E1B4480',
  r: '-0x3CB15CF40426235DF7B6BCBA29677D2AFCB990BC7F6B54C92BBF007691C058E43',
}, {
  a: '-0x29CF439C081EB1D55041F845B518D5466CA7E4A',
  b: '-0xA55D0D429612ACCCBB20AD29091DB3CB42DA3113E1CB4AE752A225B3D76B9CA93993',
  r: '0xA55D0D429612ACCCBB20AD29091DB12E4EA07091F6ADF5E3331DCA624A1735DEBB49',
}, {
  a: '-0xD6BEE590C3DAFC3D6C157BD12BD3BB4CA09898',
  b: '0x92A5854E080716A8F4D92F4F49EA5B93CC4D44',
  r: '-0x169646ADECBE212E660EEAB2075BE16E06CE5DC',
}, {
  a: '-0x5B12107F8826CD284793571B43DEEC68D60D3803561D20B4800228FB0BB3',
  b: '-0x1EF64A8F0DB36CC5E6996EBBBC284889B87D40CDC55139DBB3674CE3DD5A237',
  r: '0x1EF0996E05BAEA591414F5864A740A9AF1EFDFFA451BD809A81F4CC14DA9684',
}, {
  a: '0x1F77C7D6EC3B7FF7F9C75D96E22C5017E96E88D320E6B',
  b: '0x2D9BBCB3DCECD0799C60DD9C01A85F5CDD0C9989E00937CB69D1E6E',
  r: '-0x2D9BBCB3DCCD58B1C574A21C09AE97FF462A6D39C81FC94296B1003',
}, {
  a: '0x9323FBDE9A0708F0E7BB51978027DF572F67ED0',
  b: '-0x4FB854BCC73622CF358FB3BB63CF34AF71469A4E6AF07D55970A1402DF21934F',
  r: '0x4FB854BCC73622CF358FB3BB6D01746D5AE70ADD796C326F0F0C91F85218121F',
}, {
  a: '-0x122C7B82981BBE09E7870E19E0D761DFDF8160F59',
  b: '-0xAAA6B68C92BC01644A82E71F6221ED6E5E7D4B4A925B9',
  r: '0xAAA6A460173969488C78FF9854080C96FC9D6BC931660',
}, {
  a: '0xE8D627433BC8C0F0DCC2B1D7D17381E53F8366B411D16C79D3E',
  b: '-0xBD7C31FD357A85D8198AB5D67E7CAC5C8368FA9A1D36E5C2B4A2ABC48E5BA',
  r: '0xBD7C31FD36635BFF5CC67E976F596F0E5B3A6E1C0276692968B47D31082F8',
}, {
  a: '0x6FD2E3DFE00A4517BA6327C6EBF5DFC2D9CF6B72EAA33504537A821E0',
  b: '-0xDCD37D868DCCD3C747E299166C72184976FF6D0BCE7EC75287DD83851E3FE5749E5E',
  r: '0xDCD37D868DD3D0F585E099BABDEDBE7BF36E2C69CAAC64493F0C2DB86E851D1CC03E',
}, {
  a: '-0xDA5AA78D1E420426D2D6FDD00B29D6D0DEB2E8A47',
  b: '0x371B73B4E209C7A0A34405799376C7EDE9332248F70848B',
  r: '-0x371B748F3CB154BEE5482C4C6A7497F91309F327A9F0ED2',
}, {
  a: '0x3B0741518065845D046F2C8A9B09A7CFDBE6075D2D8F6FA',
  b: '0x60C798C48B7E40D7C6AB9E06DC10012976AF8E67677E038ADA1C739B8435',
  r: '-0x60C798C48B7E3D275296860083CA30E283E6E4B6CD0105CC79A6A0C28D3B',
}, {
  a: '0x6AB7A743F25BBD506E09365DF8386749E2A836D3208F00B501A01DE',
  b: '0x1511061C3C76409D1E8AF05BE559798ED709F1B5707001F2FF287F594A32739F',
  r: '-0x1511061C35CAC628DF653486DE78E628F7866B40D2457E85CD1F8F4DFA1871C1',
}, {
  a: '0xFE66A6F7E13A1F69EFE45C7FD90A81885D2FC455CE9346AC4AAA5F1887C157BD847FF',
  b: '0x3D0A8155B558271B34BBA5EEB42026DABAA6B78',
  r: '0xFE66A6F7E13A1F69EFE45C7FD90A814B52AE6EA0766C2B778F047064679A7D02DDC87',
}, {
  a: '0x9884AF4767899E9362206226CDB544F94F724BAE11508270EC7',
  b: '-0x3CA08CB7C32BE1EDA41E11502F70ED0B01113CAB6FE0D2',
  r: '0x9884B31170551AC6203F3C68AECA47F05E42FBBF251B396EF99',
}, {
  a: '0x9EE82F03188C3B6A982C0E09EB3E829D2773BFEB3CB780',
  b: '0x562D6339A1416ED5EAD6064CF02657C446C03A544AA20B30BB5E5AB8F63DB8F3',
  r: '-0x562D6339A1416ED5EA371E1DED0DCB88DC280E4640B6CCAE1E36E6F90B010173',
}, {
  a: '0xA7BF0C5FE4FDF71863CE0BC1FBB3608DE5361FCDF16C3359770',
  b: '0x585F273746D6061D341A5225F8691D47CFFE56F3FA2C0F2EAA719B0A160F',
  r: '-0x585F27373C5A155735CA72B4722C3C8BB04320EB1BD8AD31CB5AD7D47E9F',
}, {
  a: '0xB09D51025ACB0A4E5DC199EE6B2187F5A4200222FF9EAB',
  b: '0x2553171EFC722F0CEF8181AEBE7F3BFDBC0C8E05D3F6A79574D19F92061392',
  r: '-0x2553171EFC722F0C3EE430AC63B431AF5E4AF41768D51F9FD0B19D6F0674E7',
}, {
  a: '-0x419545498FEA943908DF623C8E986424C43C2B',
  b: '-0xBF2B9B83924BCE3A69B65E3407DFD0A660D44B',
  r: '0x7D96563A02613A0160D6FBF779476C819C9820',
}, {
  a: '0x8DB81AC8A15AEEE43F0D11B7435537D4970B68',
  b: '-0x8C7D1E51709C0ACD3848A64C7637F57C087',
  r: '0x8DC0E29A8671F8A4EBE09641A81C9B53EECBEF',
}, {
  a: '-0xBD8603EA8CFE982341E5DBD9FF847A167F6457FB3F42DDEFC9096D7',
  b: '0x1514C7E3393F6AB82DA2EEC4C4ABF1A05ED805',
  r: '-0xBD8603EA8CFE982343372858331870C2023E86E78B8D9D09CEF6EDC',
}, {
  a: '-0xD7464B64CD03525E6BD2CDD99FB0751F14417D3C44C4',
  b: '0x6290273B27AD5A01489307619DF36E1B2A8B52C938D87FE8941C8A60AB71',
  r: '-0x6290273B27AD5A021FD952C66AF6C079965E20A2D888F507A85E079CF035',
}, {
  a: '0x91910EA3CBAAC0E422CF12DBEA906606665BEA441',
  b: '-0x5D386AFC9C7F1EEDCF617DA6DB3E5B2DB3F3135AA79B',
  r: '0x5D41840D86BBD999DDA3AA9808FD0434145979194BDC',
}, {
  a: '-0x5D96C6B49B7B485DCA30ED6758DAD052859294BB59A37F668D201D55BB3354827A487A',
  b: '-0x808DE999CB05C4968AAD45DAF564A785A2C07090C31773578C27766CD9A30186',
  r: '-0x5D96C6340D91AE92C46C56DCAB94F55D20EB0F189932EEA375ACC5C993BCE7A8D746F4',
}, {
  a: '-0x72A2CD5C482BA8D4A95290C59A8C9C37A31FA26D',
  b: '-0x69D60376A18122D827BBA1A737A84742BF0714566D6A31FABBAE97B4B7FA',
  r: '0x69D60376A18122D827BB2F046A4BFF1716326B03DCA4976E1F76F495158D',
}, {
  a: '0x1EFCF1E3CC77ADBB3925A68EE854D05CD18D8',
  b: '-0xB5011433AF50FA06DFD460010A25E482EA6B8FC948756A91E264DE6D8F0AAF2FE56',
  r: '0xB5011433AF50FA06DFD460010A25E4A1E75D7395C02325CB080B6D55E3DB0C0172E',
}, {
  a: '-0xD5F31F0F66136BB9ED669B62AC9DE6FBA1C36',
  b: '0x6F5F155FA269ECA9F3408D96595D83F1047A506C2ADE7C83C49FD7C',
  r: '-0x6F5F155FA269ECA9F41680B568C3975CBE67B7078D8B1A6AC0419B2',
}, {
  a: '0x77F78478EAC4B5C560A7F686C3274C35B50EE17BE3A6F0A6B78556C070B40C2971',
  b: '0xB314D36ABD3FA8F8B86D3453E862B364027CE1747F0C8F7A5D3B55',
  r: '0x77F78478EAC402B08D3D39471A2E93C880BAF9193042EE29D610D7B3E139AEEE1C',
}, {
  a: '-0x2CC8C2BBC618BDEBC822BC5E051A5609DF4F',
  b: '-0xB029F83569B60463F54839C5AB44722CE252E29',
  r: '0xB0272BA93DF9A2D8168BB799E564208781B4EDA',
}];

const dataSmall = [{
  a: '-0x2B44917CB8E2A',
  b: '-0x9',
  r: '-0x2B44917CB8E21',
}, {
  a: '0x97292B',
  b: '0xC9B9A3389D304',
  r: '-0xC9B9A32F2A9D9',
}, {
  a: '0x945FCAAD57EF',
  b: '0x797B1A4B043',
  r: '0x8CC81908A7AC',
}, {
  a: '-0x98C3BAEF27FB53',
  b: '0xD4BD93F8',
  r: '-0x98C3BBC3E58F4B',
}, {
  a: '0xF1D1FD1E7DEA5FD5',
  b: '0xC9406A6BDBAE7E82',
  r: '0x289192B2A23BE153',
}, {
  a: '0x0',
  b: '-0xAF88A4EA',
  r: '0xAF88A4EA',
}, {
  a: '0x88CB0A0159760F92',
  b: '-0xDFDDDFEA75F2465B',
  r: '0x168A8E9EBCF6855ED',
}, {
  a: '-0xE4978E24F6ED1C',
  b: '0x0',
  r: '-0xE4978E24F6ED1C',
}, {
  a: '-0x4697D2740C9D6',
  b: '0x167951E2EC06',
  r: '-0x47FF67923B5DC',
}, {
  a: '-0x3',
  b: '-0xD3A',
  r: '0xD37',
}, {
  a: '0x4',
  b: '-0x852B45',
  r: '0x852B49',
}, {
  a: '0x0',
  b: '-0x78D464A9D99',
  r: '0x78D464A9D99',
}, {
  a: '-0x20FEA88CC',
  b: '-0x4',
  r: '-0x20FEA88C8',
}, {
  a: '-0xB54',
  b: '-0x21B63EC0CA30A',
  r: '0x21B63EC0C97B6',
}, {
  a: '0x1E7FD1CFB',
  b: '0xD3BC8FA2317D429F',
  r: '-0xD3BC8FA0498025A4',
}, {
  a: '-0x9E157BE9104291',
  b: '-0x88C27AFA755FF5C',
  r: '0x7EE1233BE45BCCB',
}, {
  a: '-0x94DFF3F801B',
  b: '0x292C1',
  r: '-0x94DFF4212DC',
}, {
  a: '0xFFD48C',
  b: '-0x2B',
  r: '0xFFD4B7',
}, {
  a: '0x0',
  b: '0x1D4A18EB',
  r: '-0x1D4A18EB',
}, {
  a: '-0x7671',
  b: '0xA386B19F177B1DAC',
  r: '-0xA386B19F177B941D',
}, {
  a: '0x2F06817EFE2',
  b: '0x7EB',
  r: '0x2F06817E7F7',
}, {
  a: '-0x1C8539',
  b: '0xAE65DD54E1BF541',
  r: '-0xAE65DD54E387A7A',
}, {
  a: '0xBF28C52B0F553A96',
  b: '0x290A238',
  r: '0xBF28C52B0CC4985E',
}, {
  a: '0x3A5',
  b: '0x203C843',
  r: '-0x203C49E',
}, {
  a: '0x4FA294B140D560',
  b: '-0x5FB195AE',
  r: '0x4FA29510F26B0E',
}, {
  a: '0x2BE6E3',
  b: '-0xACA1D',
  r: '0x36B100',
}, {
  a: '0xA93711CBB012A31',
  b: '0xA7E0B40',
  r: '0xA93711CB0831EF1',
}, {
  a: '0x2F',
  b: '-0x57C356BB48A',
  r: '0x57C356BB4B9',
}, {
  a: '0xEECED7824621DD',
  b: '0x0',
  r: '0xEECED7824621DD',
}, {
  a: '-0x263FB6095FD5',
  b: '-0x92E2441DAF444',
  r: '0x907E48BD1946F',
}, {
  a: '0xFE7206DBA8CDCDE4',
  b: '-0x2EA79320468F60',
  r: '0xFEA0AE6EC9145D44',
}, {
  a: '-0x9CD8E36D1',
  b: '0x15E880C9C08A',
  r: '-0x15F24E57F75B',
}, {
  a: '-0x538CD85EE03E5A1',
  b: '-0xF89F40',
  r: '-0x538CD85ED0B4661',
}, {
  a: '-0x5303225793A5E',
  b: '0x67',
  r: '-0x5303225793AC5',
}, {
  a: '0x9CD27B4C5C842309',
  b: '-0x148',
  r: '0x9CD27B4C5C842451',
}, {
  a: '0x245C5DC',
  b: '-0xA9210E0B933C',
  r: '0xA92110515918',
}, {
  a: '-0x228713AC3',
  b: '-0xFCF7',
  r: '-0x228703DCC',
}, {
  a: '0xC74',
  b: '-0x104',
  r: '0xD78',
}, {
  a: '0x0',
  b: '-0x3306038',
  r: '0x3306038',
}, {
  a: '0xB0379E32',
  b: '-0x1F46A672046C10',
  r: '0x1F46A7223C0A42',
}, {
  a: '-0x63A01411',
  b: '0x364',
  r: '-0x63A01775',
}, {
  a: '0x56',
  b: '-0xA87481E185',
  r: '0xA87481E1DB',
}, {
  a: '-0x3C94E3D3EEC',
  b: '0x0',
  r: '-0x3C94E3D3EEC',
}, {
  a: '-0x45E84EDA',
  b: '0xC25FE',
  r: '-0x45F474D8',
}, {
  a: '-0xFF12ECE1270',
  b: '0xADF5E3C8D11AE',
  r: '-0xAEF4F6B5B241E',
}, {
  a: '-0xEF81A5F9A2',
  b: '0x1513028E',
  r: '-0xEF96B8FC30',
}, {
  a: '0x50CCF4',
  b: '0xF49D80EB09DA2543',
  r: '-0xF49D80EB0989584F',
}, {
  a: '0x7EAD2CB2541A4',
  b: '-0x438',
  r: '0x7EAD2CB2545DC',
}, {
  a: '0xB41',
  b: '-0x33870BA',
  r: '0x3387BFB',
}, {
  a: '0x35F43D9717B71F87',
  b: '-0xAA',
  r: '0x35F43D9717B72031',
}, {
  a: '0xC895BF7426AF41B',
  b: '-0x395C47325DBFA32E',
  r: '0x45E5A329A02A9749',
}, {
  a: '0xB14F0DEF37A8B',
  b: '0x2F8',
  r: '0xB14F0DEF37793',
}, {
  a: '-0x56',
  b: '0x5C1EA483',
  r: '-0x5C1EA4D9',
}, {
  a: '-0x8A97A9CBBA196',
  b: '0x0',
  r: '-0x8A97A9CBBA196',
}, {
  a: '0x81F524315D6A',
  b: '-0x44E37A0EE9DC6',
  r: '0x4D02CC51FFB30',
}, {
  a: '-0x351ECEF961',
  b: '0xDE0',
  r: '-0x351ECF0741',
}, {
  a: '-0xB82A32',
  b: '-0x9B5CA922E1079A',
  r: '0x9B5CA92228DD68',
}, {
  a: '-0x48E0430E1F055',
  b: '0x73CCBFFC1C431A',
  r: '-0x785AC42CFE336F',
}, {
  a: '0x42CA089',
  b: '-0x9ACB4CBBCB02D8',
  r: '0x9ACB4CBFF7A361',
}, {
  a: '0x0',
  b: '0x2EB',
  r: '-0x2EB',
}, {
  a: '0x378303C038F',
  b: '0xD19872',
  r: '0x3782F6A6B1D',
}, {
  a: '0xAC0CD4',
  b: '0xFFA26E011280',
  r: '-0xFFA26D5505AC',
}, {
  a: '0x550',
  b: '0x82959877',
  r: '-0x82959327',
}, {
  a: '0x914E77639A',
  b: '0x2',
  r: '0x914E776398',
}, {
  a: '0x9F55877797225E3',
  b: '0x848',
  r: '0x9F5587779721D9B',
}, {
  a: '-0x7957F7AEDA49',
  b: '-0x3CAA',
  r: '-0x7957F7AE9D9F',
}, {
  a: '-0x7EF031677C91',
  b: '-0x1653EBFBFCE',
  r: '-0x7D8AF2A7BCC3',
}, {
  a: '0xF31C8',
  b: '0x0',
  r: '0xF31C8',
}, {
  a: '0x0',
  b: '0xFB7EC3',
  r: '-0xFB7EC3',
}, {
  a: '-0xE9B17D091A93AE7A',
  b: '0x9296C29',
  r: '-0xE9B17D0923BD1AA3',
}, {
  a: '0xCCB9',
  b: '0xB342B5B5',
  r: '-0xB341E8FC',
}, {
  a: '0x36C8',
  b: '0x75',
  r: '0x3653',
}, {
  a: '-0xCD3980',
  b: '0xB0',
  r: '-0xCD3A30',
}, {
  a: '-0x5BE3',
  b: '-0x894F981',
  r: '0x8949D9E',
}, {
  a: '-0x95CC15EA57DD4BB0',
  b: '-0x2AB758F06022F',
  r: '-0x95C96A74C8D74981',
}, {
  a: '-0x4C9',
  b: '0x0',
  r: '-0x4C9',
}, {
  a: '-0x98B17A4159F',
  b: '0x25FC6F45FAF09',
  r: '-0x269520C03C4A8',
}, {
  a: '-0xD9',
  b: '0x7185F1',
  r: '-0x7186CA',
}, {
  a: '-0xF1D1D90E1A',
  b: '-0xDE304508D4',
  r: '-0x13A1940546',
}, {
  a: '-0x41AF',
  b: '0x37234C8FD7',
  r: '-0x37234CD186',
}, {
  a: '0x4171A4B877CFB',
  b: '-0xA3F6',
  r: '0x4171A4B8820F1',
}, {
  a: '-0xB71',
  b: '-0x1163EBCCC175B',
  r: '0x1163EBCCC0BEA',
}, {
  a: '-0x3CB8BC0A704192',
  b: '0x78A3D016C85BA57',
  r: '-0x7C6F5BD76F5FBE9',
}, {
  a: '0xB34',
  b: '0xD8A21B10DAFA',
  r: '-0xD8A21B10CFC6',
}, {
  a: '0x8493',
  b: '-0x62F89A1595F5',
  r: '0x62F89A161A88',
}, {
  a: '0xE51',
  b: '-0x1A',
  r: '0xE6B',
}, {
  a: '-0xCE19',
  b: '0x2ED27476E1',
  r: '-0x2ED27544FA',
}, {
  a: '0x40084F4',
  b: '-0xE654962362',
  r: '0xE65896A856',
}, {
  a: '-0xDE51DBF6A1',
  b: '0xDE569',
  r: '-0xDE51E9DC0A',
}, {
  a: '0xFF0491C1',
  b: '0xC7B',
  r: '0xFF048546',
}, {
  a: '0x23B87BDB',
  b: '0x1BD987DC4699F616',
  r: '-0x1BD987DC22E17A3B',
}, {
  a: '0xDFAF20E3C37',
  b: '-0x892793B5D8D57EE',
  r: '0x89287364F9B9425',
}, {
  a: '0xF2C194BF31483',
  b: '-0x5',
  r: '0xF2C194BF31488',
}, {
  a: '0xBC36FBDEA6E',
  b: '-0x72AC9FB2EA68',
  r: '0x7E700F70D4D6',
}, {
  a: '0x577B6BCB',
  b: '-0x90',
  r: '0x577B6C5B',
}, {
  a: '-0x9B311A',
  b: '-0x5366997C28',
  r: '0x5365FE4B0E',
}, {
  a: '0x904C01562F00ED5F',
  b: '0xCB49BA7F0456C83',
  r: '0x839765AE3EBB80DC',
}, {
  a: '-0xB',
  b: '0xED4',
  r: '-0xEDF',
}, {
  a: '-0x924744A1',
  b: '-0x3711C',
  r: '-0x9243D385',
}, {
  a: '-0x7BC5FB799',
  b: '-0xC1',
  r: '-0x7BC5FB6D8',
}];

import JSBI from '../dist/jsbi.mjs';
const JSBigInt = JSBI.BigInt;

let errorCount = 0;

const dataBigNative = [];
const dataBigJsbi = [];
const dataSmallNative = [];
const dataSmallJsbi = [];

function hexParseN(s) {
  if (s.charCodeAt(0) === 0x2D) return -BigInt(s.slice(1));
  return BigInt(s);
}
function parseNative(d) {
  if (d.b) {
    return {a: hexParseN(d.a), b: hexParseN(d.b), r: hexParseN(d.r)};
  }
  return {a: hexParseN(d.a), r: hexParseN(d.r)};
}
function hexParse(s) {
  if (s.charCodeAt(0) === 0x2D) {
    const result = JSBigInt(s.slice(1));
    result.sign = true;
    return result;
  }
  return JSBigInt(s);
}
function parseJSBI(d) {
  if (d.b) {
    return {a: hexParse(d.a), b: hexParse(d.b), r: hexParse(d.r)};
  }
  return {a: hexParse(d.a), r: hexParse(d.r)};
}
function prepareData(src, dstNative, dstJsbi) {
  for (let i = 0; i < src.length; i++) {
    const d = src[i];
    dstNative.push(parseNative(d));
    dstJsbi.push(parseJSBI(d));
  }
}
prepareData(dataBig, dataBigNative, dataBigJsbi);
prepareData(dataSmall, dataSmallNative, dataSmallJsbi);


function testNative(data, reps) {
  for (let i = 0; i < data.length; i++) {
    const d = data[i];
    const r = d.a - d.b;
    if (d.r !== r) {
      console.log('Input A:  ' + d.a.toString(16));
      console.log('Input B:  ' + d.b.toString(16));
      console.log('Result:   ' + r.toString(16));
      console.log('Expected: ' + d.r.toString(16));
      console.log('Op: -');
      errorCount++;
    }
  }
  let r;
  const t1 = Date.now();
  for (let j = 0; j < reps; j++) {
    for (let i = 0; i < data.length; i++) {
      const d = data[i];
      r = d.a - d.b;
    }
  }
  // Confuse the compiler into thinking that the loop is needed :-)
  const d = data[data.length - 1];
  if (d.r !== r) throw new Error('no dead code elimination please');
  return Date.now() - t1;
}


function testJsbi(data, reps) {
  for (let i = 0; i < data.length; i++) {
    const d = data[i];
    const r = JSBI.subtract(d.a, d.b);
    if (!JSBI.equal(r, d.r)) {
      console.log('Input A:  ' + d.a.toString(16));
      console.log('Input B:  ' + d.b.toString(16));
      console.log('Result:   ' + r.toString(16));
      console.log('Expected: ' + d.r.toString(16));
      console.log('Op: subtract');
      errorCount++;
    }
  }
  let r;
  const t1 = Date.now();
  for (let j = 0; j < reps; j++) {
    for (let i = 0; i < data.length; i++) {
      const d = data[i];
      r = JSBI.subtract(d.a, d.b);
    }
  }
  // Confuse the compiler into thinking that the loop is needed :-)
  const d = data[data.length - 1];
  if (!JSBI.equal(r, d.r)) throw new Error('no dead code elimination please');
  return Date.now() - t1;
}


const kRepsBig = 40000;
const kRepsSmall = 120000;

console.log('Testing subtract:');
console.log('Native/big:   ' + testNative(dataBigNative, kRepsBig));
console.log('JSBI/big:     ' + testJsbi(dataBigJsbi, kRepsBig));
console.log('Native/small: ' + testNative(dataSmallNative, kRepsSmall));
console.log('JSBI/small:   ' + testJsbi(dataSmallJsbi, kRepsSmall));

if (errorCount !== 0) {
  console.error('Finished with ' + errorCount + ' errors.');
  // Support both d8 (`quit`) and Node.js (`process.exit`).
  (typeof quit !== 'undefined' ? quit : process.exit)(1);
}
